Spring Cloud Sleuth একটি ডিসট্রিবিউটেড ট্রেসিং সিস্টেম যা মাইক্রোসার্ভিস আর্কিটেকচারে যোগাযোগের ট্রেসিং পরিচালনা করতে সাহায্য করে। এটি Spring Boot অ্যাপ্লিকেশনে বিভিন্ন সার্ভিস কলের ট্রেসিং এবং লগিং তথ্য সংগ্রহ করে, যা ডেভেলপারদের এবং সিস্টেম অ্যাডমিনিস্ট্রেটরদের সার্ভিসের পারফরম্যান্স এবং সমস্যাগুলির দ্রুত সমাধান করতে সহায়ক হয়। Spring Cloud Sleuth একটি Trace (অথবা সার্ভিস কলের চেইন) এবং Span (একটি নির্দিষ্ট সার্ভিস কলের একটি ইউনিট) ধারণা ব্যবহার করে।
Distributed Tracing ব্যবহারের মাধ্যমে, যখন বিভিন্ন সার্ভিস একে অপরকে কল করে, তখন প্রতিটি সার্ভিসের মধ্যে ট্রেস আইডি এবং স্প্যান আইডি পাস করা হয়। এটি সার্ভিসের প্রতিটি রিকোয়েস্ট এবং প্রতিক্রিয়া ট্র্যাক করতে সাহায্য করে এবং মাইক্রোসার্ভিস আর্কিটেকচারের কার্যকলাপের সম্পূর্ণ ছবি তৈরি করে।
Spring Cloud Sleuth এর মাধ্যমে Trace Management এর ধারণা
- Trace: একটি Trace একটি সিস্টেমের মধ্যে একাধিক সার্ভিস কলের একটি ধারাবাহিকতা (যেমন, এক সার্ভিসের কল আরেক সার্ভিসের কল দ্বারা অনুসৃত হচ্ছে)।
- Span: প্রতিটি Span একটি নির্দিষ্ট সার্ভিস কল বা একটি নির্দিষ্ট কাজের প্রতিনিধিত্ব করে যা একটি Trace এর মধ্যে থাকতে পারে।
- Trace ID & Span ID: Sleuth প্রতিটি সার্ভিস কলের জন্য একটি Trace ID এবং Span ID জেনারেট করে। Trace ID পুরো রিকোয়েস্টের জন্য ইউনিক এবং Span ID নির্দিষ্ট সার্ভিসের জন্য ইউনিক।
এটি ডেভেলপারদের সাহায্য করে রিকোয়েস্টের পুরো পথ (যার মধ্যে একাধিক সার্ভিস কলের মাধ্যমে ডেটা চলে) ট্র্যাক করতে, পারফরম্যান্স সমস্যাগুলি চিহ্নিত করতে এবং সার্ভিসের মধ্যে অপ্রত্যাশিত বিলম্ব বা ব্যর্থতার কারণ অনুসন্ধান করতে।
Spring Cloud Sleuth সেটআপ করা
Step 1: Maven ডিপেনডেন্সি যোগ করা
Spring Boot অ্যাপ্লিকেশনটি Spring Cloud Sleuth দিয়ে ট্রেসিং পরিচালনা করতে হলে আপনাকে spring-cloud-starter-sleuth ডিপেনডেন্সি যোগ করতে হবে।
<dependencies>
<!-- Spring Boot Starter Web Dependency -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- Spring Cloud Sleuth Dependency -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-sleuth</artifactId>
</dependency>
<!-- Spring Boot Starter Actuator (for monitoring and management) -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
</dependencies>
Step 2: application.properties কনফিগারেশন
Spring Cloud Sleuth সাধারণত application.properties বা application.yml কনফিগারেশন ফাইলে কিছু প্রাথমিক সেটিংস নির্ধারণ করে।
# Enable Sleuth for distributed tracing
spring.sleuth.enabled=true
# Set the service name for tracing identification
spring.application.name=my-application
# Customizing trace ID length (optional)
spring.sleuth.trace-id-length=32
Spring Cloud Sleuth ডিফল্টভাবে HTTP রিকোয়েস্ট এবং রেসপন্সের জন্য ট্রেসিং যুক্ত করে, এবং এটি আপনার মাইক্রোসার্ভিসে স্বয়ংক্রিয়ভাবে Trace এবং Span তৈরি করবে।
Step 3: Trace এবং Span ট্র্যাকিং
Spring Cloud Sleuth স্বয়ংক্রিয়ভাবে HTTP রিকোয়েস্ট, অ্যাক্টুয়েটর ইন্ডপয়েন্টস, এবং ইন্টারনাল সার্ভিস কলের জন্য Trace এবং Span ট্র্যাকিং শুরু করবে। এটি ট্রেস এবং স্প্যান আইডি আপনার লোগের মধ্যে অন্তর্ভুক্ত করে, যা পরবর্তী ডিবাগিং এবং অ্যানালাইসিসের জন্য কাজে আসে।
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class MyController {
@GetMapping("/hello")
public String hello() {
return "Hello from Spring Cloud Sleuth!";
}
}
যখন /hello রিকোয়েস্ট করা হবে, তখন Sleuth স্বয়ংক্রিয়ভাবে ট্রেস আইডি এবং স্প্যান আইডি যুক্ত করবে এবং এই তথ্য লোগে দেখতে পাবেন।
Spring Cloud Sleuth Logs Example
Sleuth এর মাধ্যমে লগগুলি স্বয়ংক্রিয়ভাবে ট্রেস আইডি এবং স্প্যান আইডি সহ যুক্ত করা হয়, যেমন:
2024-12-19 10:00:00.123 INFO [my-application, 6f4a578bc823fcb1, 2a749f39cc869e3f] 12345 --- [nio-8080-exec-1] com.example.demo.MyController : Handling request for /hello
2024-12-19 10:00:01.456 INFO [my-application, 6f4a578bc823fcb1, 2a749f39cc869e3f] 12345 --- [nio-8080-exec-1] com.example.demo.MyController : Responding with "Hello from Spring Cloud Sleuth!"
এখানে:
- Trace ID:
6f4a578bc823fcb1— পুরো রিকোয়েস্টের জন্য ইউনিক ট্রেস আইডি। - Span ID:
2a749f39cc869e3f— নির্দিষ্ট সার্ভিস কলের জন্য ইউনিক স্প্যান আইডি।
Step 4: Distributed Tracing Visualization
Spring Cloud Sleuth সাধারণত Zipkin বা Jaeger এর সাথে ইন্টিগ্রেট করা হয়, যাতে ডিস্ট্রিবিউটেড ট্রেসিং এর দৃশ্যমানতা পাওয়া যায়।
Zipkin Integration:
Spring Cloud Sleuth Zipkin-এর সাথে সংযুক্ত করতে:
- Add Zipkin Dependency:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zipkin</artifactId>
</dependency>
- Configure Zipkin in
application.properties:
# Zipkin server URL
spring.zipkin.baseUrl=http://localhost:9411
spring.sleuth.sampler.probability=1.0 # Trace all requests
- Start Zipkin Server:
Zipkin চালু করতে আপনি Docker ব্যবহার করতে পারেন:
docker run -d -p 9411:9411 openzipkin/zipkin
এখন আপনি http://localhost:9411 এ গিয়ে Zipkin UI-তে ট্রেস তথ্য দেখতে পাবেন।
Jaeger Integration:
Jaeger সিস্টেম ব্যবহার করতে হলে Jaeger ট্রেসিং সার্ভার এবং ডিপেনডেন্সি কনফিগারেশন করতে হবে। Jaeger অধিকভাবে কার্যকরী এবং অনেক মাইক্রোসার্ভিস আর্কিটেকচারে ব্যবহৃত হয়।
Step 5: Monitoring with Spring Boot Actuator
Spring Boot Actuator দ্বারা Sleuth এর ট্রেসিং ডেটা মনিটর করতে পারেন। Actuator এর মাধ্যমে আপনি HTTP ট্রেস দেখতে পারেন:
management.endpoints.web.exposure.include=health,info,metrics,trace
এখন আপনি /actuator/trace এ গিয়ে HTTP ট্রেস দেখতে পাবেন।
উপসংহার
Spring Cloud Sleuth দ্বারা distributed tracing পরিচালনা করা একটি অত্যন্ত কার্যকরী পদ্ধতি যা মাইক্রোসার্ভিস আর্কিটেকচারে সার্ভিসের মধ্যে ট্রেসিং এবং লগিং প্রক্রিয়া সহজ করে তোলে। Sleuth সার্ভিস কলের সমস্ত ট্রেস এবং স্প্যান তথ্য সংগ্রহ করে, যা ডেভেলপারদের সিস্টেমের কার্যকলাপ মনিটর এবং সমস্যা সমাধানে সহায়ক হয়। Sleuth এর মাধ্যমে, সার্ভিসের প্রতিটি রিকোয়েস্টের ট্রেসিং, লগিং এবং ডিবাগিং করা সহজ এবং সিস্টেমের পারফরম্যান্স উন্নত করা সম্ভব।
Read more